【问题处理】ORA

您所在的位置:网站首页 invalid argument翻译 【问题处理】ORA

【问题处理】ORA

2023-08-18 07:30| 来源: 网络整理| 查看: 265

  SQL> create table tmao (id varchar2(64))

  2   SQL> create table tmao (id varchar2(64));   Table created   SQL> insert into tmao values(818);   1 row inserted   SQL> insert into tmao values('819');   1 row inserted   SQL> commit;   Commit complete   SQL> select * from tmao where id=818;   ID ---------------------------------------------------------------- 818   SQL> select * from tmao where id=819;   ID ---------------------------------------------------------------- 819   SQL> insert into tmao values('4r');   1 row inserted   SQL> commit;   Commit complete   SQL> select * from tmao where id=819;   select * from tmao where id=819   ORA-01722: invalid number

SQL> create index inf on tmao(to_number(id));   create index inf on tmao(to_number(id))   ORA-01722: invalid number

最开始发起这个事情的原因,是开发人员问我,为啥在生产上执行id=819,不需要加引号就可以查不出来结果,而测试环境就需要加引号才可以查出来,如果不加引号就报错,无效的数字。其实做完实验,会发现很简单,原因就是id这是varchar2类型的,当我们不加引号的时候,走的是全表扫描,所以当扫描到不是纯数字的行时就会报错。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3